package com.tn.service.usermanagement;

import com.tn.controller.alarm.common.model.CommonVO;
import com.tn.controller.alarm.common.model.PageInput;
import com.tn.controller.alarm.common.model.PageResult;
import com.tn.controller.alarm.common.model.user.entity.Menu;
import com.tn.controller.alarm.common.model.user.vo.MenuUserVo;
import com.tn.controller.alarm.common.model.user.vo.UserVO;
import com.tn.controller.alarm.common.model.user.entity.DeptDO;
import com.tn.exception.DatabaseOperationFailedException;

/**
 * 人员管理service
 *
 * @program: tn_aucy_java
 * @author: yangjiayao
 * @create: 2021/12/24
 */
public interface IUserManagementService {
    /**
     * 新增部门
     *
     * @param dept 部门信息
     * @return 结果
     */
    CommonVO<Object> addDept(DeptDO dept) throws DatabaseOperationFailedException;

    /**
     * 删除部门
     *
     * @param dept 部门信息
     * @return 结果
     */
    CommonVO<Object> deleteDept(DeptDO dept) throws DatabaseOperationFailedException;

    /**
     * 修改部门
     *
     * @param dept 部门信息
     * @return 结果
     */
    CommonVO<Object> modifyDept(DeptDO dept) throws DatabaseOperationFailedException;

    /**
     * 查询部门
     *
     * @param pageDept 部门信息
     * @return 结果
     */
    CommonVO<PageResult<DeptDO>> queryDept(PageInput<DeptDO> pageDept);

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 结果
     */
    CommonVO<Object> addUser(UserVO user) throws DatabaseOperationFailedException;

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 结果
     */
    CommonVO<Object> deleteUser(UserVO user) throws DatabaseOperationFailedException;

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 结果
     */
    CommonVO<Object> modifyUser(UserVO user) throws DatabaseOperationFailedException;

    /**
     * 新增用户
     *
     * @param pageUser 用户信息
     * @return 结果
     */
    CommonVO<PageResult<UserVO>> queryUser(PageInput<UserVO> pageUser);

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 结果
     */
    CommonVO<Object> modifySuperUser(UserVO user) throws DatabaseOperationFailedException;


    CommonVO<Object> addMenu(Menu menu);

    CommonVO<Object> editMenu(Menu menu);

    CommonVO<Object> deleteMenu(Long id);


    CommonVO<Object> selectAllMenu(Long id);


    CommonVO<Object> bindUserMenu(MenuUserVo vo);
}
